<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>java基础面试题六 | 小狐档案库</title>
    <meta name="generator" content="VuePress 1.8.2">
    <link rel="icon" href="/favicon.ico">
    <meta name="description" content="学习资料">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    
    <link rel="preload" href="/assets/css/0.styles.0c36f186.css" as="style"><link rel="preload" href="/assets/js/app.7029ddab.js" as="script"><link rel="preload" href="/assets/js/3.ebaa3085.js" as="script"><link rel="preload" href="/assets/js/1.8ce67e8c.js" as="script"><link rel="preload" href="/assets/js/56.e820e954.js" as="script"><link rel="prefetch" href="/assets/js/10.15c1f9c8.js"><link rel="prefetch" href="/assets/js/11.dc2fbddf.js"><link rel="prefetch" href="/assets/js/12.26ab1f36.js"><link rel="prefetch" href="/assets/js/13.6e1d4dbc.js"><link rel="prefetch" href="/assets/js/14.0cd48e80.js"><link rel="prefetch" href="/assets/js/15.74a9f029.js"><link rel="prefetch" href="/assets/js/16.24ef3382.js"><link rel="prefetch" href="/assets/js/17.c8a9bd0f.js"><link rel="prefetch" href="/assets/js/18.fbd494c2.js"><link rel="prefetch" href="/assets/js/19.f9a0df71.js"><link rel="prefetch" href="/assets/js/20.e6d0df38.js"><link rel="prefetch" href="/assets/js/21.932645cc.js"><link rel="prefetch" href="/assets/js/22.d6027dce.js"><link rel="prefetch" href="/assets/js/23.53bce141.js"><link rel="prefetch" href="/assets/js/24.ed3b8b64.js"><link rel="prefetch" href="/assets/js/25.ed88877e.js"><link rel="prefetch" href="/assets/js/26.f5ad24d5.js"><link rel="prefetch" href="/assets/js/27.64ad45b4.js"><link rel="prefetch" href="/assets/js/28.f308f8ab.js"><link rel="prefetch" href="/assets/js/29.4d95742d.js"><link rel="prefetch" href="/assets/js/30.0a867de0.js"><link rel="prefetch" href="/assets/js/31.f12def86.js"><link rel="prefetch" href="/assets/js/32.6b4fd8b7.js"><link rel="prefetch" href="/assets/js/33.4bb2aa9c.js"><link rel="prefetch" href="/assets/js/34.013e731c.js"><link rel="prefetch" href="/assets/js/35.6b263ef8.js"><link rel="prefetch" href="/assets/js/36.06acf3cc.js"><link rel="prefetch" href="/assets/js/37.fe72c29c.js"><link rel="prefetch" href="/assets/js/38.9b4e0bd6.js"><link rel="prefetch" href="/assets/js/39.0cde0408.js"><link rel="prefetch" href="/assets/js/4.9b5650bb.js"><link rel="prefetch" href="/assets/js/40.56bda9a8.js"><link rel="prefetch" href="/assets/js/41.007ae34c.js"><link rel="prefetch" href="/assets/js/42.bdaf414b.js"><link rel="prefetch" href="/assets/js/43.78d32d4e.js"><link rel="prefetch" href="/assets/js/44.a10cf8a5.js"><link rel="prefetch" href="/assets/js/45.19e14721.js"><link rel="prefetch" href="/assets/js/46.57ebcf06.js"><link rel="prefetch" href="/assets/js/47.9a513ffe.js"><link rel="prefetch" href="/assets/js/48.245b165a.js"><link rel="prefetch" href="/assets/js/49.fab43655.js"><link rel="prefetch" href="/assets/js/5.a16ef7f8.js"><link rel="prefetch" href="/assets/js/50.48c191fd.js"><link rel="prefetch" href="/assets/js/51.28a94b0e.js"><link rel="prefetch" href="/assets/js/52.e783fbf9.js"><link rel="prefetch" href="/assets/js/53.2f0e960e.js"><link rel="prefetch" href="/assets/js/54.577ff54e.js"><link rel="prefetch" href="/assets/js/55.4bb99598.js"><link rel="prefetch" href="/assets/js/57.0cea0cfa.js"><link rel="prefetch" href="/assets/js/58.e31cfcd0.js"><link rel="prefetch" href="/assets/js/59.458ab168.js"><link rel="prefetch" href="/assets/js/6.7da424ba.js"><link rel="prefetch" href="/assets/js/60.e9caace2.js"><link rel="prefetch" href="/assets/js/61.0b61afdb.js"><link rel="prefetch" href="/assets/js/62.c240acab.js"><link rel="prefetch" href="/assets/js/63.71cd2a97.js"><link rel="prefetch" href="/assets/js/64.977ea29b.js"><link rel="prefetch" href="/assets/js/65.79b2d62a.js"><link rel="prefetch" href="/assets/js/66.8da69071.js"><link rel="prefetch" href="/assets/js/67.fdc57d7e.js"><link rel="prefetch" href="/assets/js/68.d43eabe9.js"><link rel="prefetch" href="/assets/js/7.6e92edd1.js"><link rel="prefetch" href="/assets/js/8.2389170b.js"><link rel="prefetch" href="/assets/js/9.77841f24.js">
    <link rel="stylesheet" href="/assets/css/0.styles.0c36f186.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container" data-v-1156296a><div data-v-1156296a><div id="loader-wrapper" class="loading-wrapper" data-v-d48f4d20 data-v-1156296a data-v-1156296a><div class="loader-main" data-v-d48f4d20><div data-v-d48f4d20></div><div data-v-d48f4d20></div><div data-v-d48f4d20></div><div data-v-d48f4d20></div></div> <!----> <!----></div> <div class="password-shadow password-wrapper-out" style="display:none;" data-v-4e82dffc data-v-1156296a data-v-1156296a><h3 class="title" data-v-4e82dffc data-v-4e82dffc>小狐档案库</h3> <p class="description" data-v-4e82dffc data-v-4e82dffc>学习资料</p> <label id="box" class="inputBox" data-v-4e82dffc data-v-4e82dffc><input type="password" value="" data-v-4e82dffc> <span data-v-4e82dffc>Konck! Knock!</span> <button data-v-4e82dffc>OK</button></label> <div class="footer" data-v-4e82dffc data-v-4e82dffc><span data-v-4e82dffc><i class="iconfont reco-theme" data-v-4e82dffc></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-4e82dffc>vuePress-theme-reco</a></span> <span data-v-4e82dffc><i class="iconfont reco-copyright" data-v-4e82dffc></i> <a data-v-4e82dffc><span data-v-4e82dffc>小狐</span>
            
          <span data-v-4e82dffc>2021-9-1 - </span>
          2021
        </a></span></div></div> <div class="hide" data-v-1156296a><header class="navbar" data-v-1156296a><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="小狐档案库" class="logo"> <span class="site-name">小狐档案库</span></a> <div class="links"><div class="color-picker"><a class="color-button"><i class="iconfont reco-color"></i></a> <div class="color-picker-menu" style="display:none;"><div class="mode-options"><h4 class="title">Choose mode</h4> <ul class="color-mode-options"><li class="dark">dark</li><li class="auto active">auto</li><li class="light">light</li></ul></div></div></div> <div class="search-box"><i class="iconfont reco-search"></i> <input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"><i class="iconfont reco-home"></i>
  首页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      分类
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/categories/GO/" class="nav-link"><i class="undefined"></i>
  GO
</a></li><li class="dropdown-item"><!----> <a href="/categories/面试系列/" class="nav-link"><i class="undefined"></i>
  面试系列
</a></li></ul></div></div><div class="nav-item"><a href="/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  Tag
</a></div><div class="nav-item"><a href="/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  足迹
</a></div><div class="nav-item"><a href="https://www.xiaohu.team" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-message"></i>
  摇光图库
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav></div></header> <div class="sidebar-mask" data-v-1156296a></div> <aside class="sidebar" data-v-1156296a><div class="personal-info-wrapper" data-v-828910c6 data-v-1156296a><img src="/avatar.jpg" alt="author-avatar" class="personal-img" data-v-828910c6> <h3 class="name" data-v-828910c6>
    小狐
  </h3> <div class="num" data-v-828910c6><div data-v-828910c6><h3 data-v-828910c6>58</h3> <h6 data-v-828910c6>Articles</h6></div> <div data-v-828910c6><h3 data-v-828910c6>20</h3> <h6 data-v-828910c6>Tags</h6></div></div> <ul class="social-links" data-v-828910c6></ul> <hr data-v-828910c6></div> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link"><i class="iconfont reco-home"></i>
  首页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      分类
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/categories/GO/" class="nav-link"><i class="undefined"></i>
  GO
</a></li><li class="dropdown-item"><!----> <a href="/categories/面试系列/" class="nav-link"><i class="undefined"></i>
  面试系列
</a></li></ul></div></div><div class="nav-item"><a href="/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  Tag
</a></div><div class="nav-item"><a href="/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  足迹
</a></div><div class="nav-item"><a href="https://www.xiaohu.team" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-message"></i>
  摇光图库
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>面试系列</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading open"><span>java</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><section class="sidebar-group collapsable is-sub-group depth-2"><p class="sidebar-heading open"><span>java基础系列</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/blogs/audition/java/java_base/base_1.html" class="sidebar-link">java基础面试题一</a></li><li><a href="/blogs/audition/java/java_base/base_2.html" class="sidebar-link">java基础面试题二</a></li><li><a href="/blogs/audition/java/java_base/base_3.html" class="sidebar-link">java基础面试题三</a></li><li><a href="/blogs/audition/java/java_base/base_4.html" class="sidebar-link">java基础面试题四</a></li><li><a href="/blogs/audition/java/java_base/base_5.html" class="sidebar-link">java基础面试题四</a></li><li><a href="/blogs/audition/java/java_base/base_6.html" aria-current="page" class="active sidebar-link">java基础面试题六</a></li><li><a href="/blogs/audition/java/java_base/base_7.html" class="sidebar-link">java基础面试题七</a></li><li><a href="/blogs/audition/java/java_base/base_8.html" class="sidebar-link">java基础面试题八</a></li></ul></section></li><li><section class="sidebar-group collapsable is-sub-group depth-2"><p class="sidebar-heading"><span>并发编程系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-2"><p class="sidebar-heading"><span>Spring系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-2"><p class="sidebar-heading"><span>SpringBoot系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-2"><p class="sidebar-heading"><span>Mybatis系列</span> <span class="arrow right"></span></p> <!----></section></li></ul></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>redis系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>消息队列系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>zookeeper系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>Linux系列</span> <span class="arrow right"></span></p> <!----></section></li></ul></section></li></ul> </aside> <div class="password-shadow password-wrapper-in" style="display:none;" data-v-4e82dffc data-v-1156296a><h3 class="title" data-v-4e82dffc data-v-4e82dffc>java基础面试题六</h3> <!----> <label id="box" class="inputBox" data-v-4e82dffc data-v-4e82dffc><input type="password" value="" data-v-4e82dffc> <span data-v-4e82dffc>Konck! Knock!</span> <button data-v-4e82dffc>OK</button></label> <div class="footer" data-v-4e82dffc data-v-4e82dffc><span data-v-4e82dffc><i class="iconfont reco-theme" data-v-4e82dffc></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-4e82dffc>vuePress-theme-reco</a></span> <span data-v-4e82dffc><i class="iconfont reco-copyright" data-v-4e82dffc></i> <a data-v-4e82dffc><span data-v-4e82dffc>小狐</span>
            
          <span data-v-4e82dffc>2021-9-1 - </span>
          2021
        </a></span></div></div> <div data-v-1156296a><main class="page"><section><div class="page-title"><h1 class="title">java基础面试题六</h1> <div data-v-1ff7123e><i class="iconfont reco-account" data-v-1ff7123e><span data-v-1ff7123e>小狐</span></i> <i class="iconfont reco-date" data-v-1ff7123e><span data-v-1ff7123e>9/11/2021</span></i> <!----> <i class="tags iconfont reco-tag" data-v-1ff7123e><span class="tag-item" data-v-1ff7123e>java</span><span class="tag-item" data-v-1ff7123e>Java基础</span></i></div></div> <div class="theme-reco-content content__default"><h3 id="_51、arraylist-与-linkedlist-的不区别"><a href="#_51、arraylist-与-linkedlist-的不区别" class="header-anchor">#</a> 51、ArrayList 与 LinkedList 的不区别？</h3> <p>最明显的区别是 ArrrayList 底层的数据结构是数组，支持随机访问，而LinkedList 的底层数据结构书链表，不支持随机访问。使用下标访问一个元素，ArrayList 的时间复杂度是 O(1)，而 LinkedList 是 O(n)。</p> <h3 id="_52、用哪两种方式来实现集合的排序"><a href="#_52、用哪两种方式来实现集合的排序" class="header-anchor">#</a> 52、用哪两种方式来实现集合的排序？</h3> <p>你可以使用有序集合，如 TreeSet 或 TreeMap，你也可以使用有顺序的的集合，如 list，然后通过 Collections.sort() 来排序。</p> <h3 id="_53、java-中怎么打印数组"><a href="#_53、java-中怎么打印数组" class="header-anchor">#</a> 53、Java 中怎么打印数组？</h3> <p>你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法来打印数组。由于数组没有实现 toString() 方法，所以如果将数组传递给 System.out.println()方法，将无法打印出数组的内容，但是 Arrays.toString() 可以打印每个元素。</p> <h3 id="_54、java-中的-linkedlist-是单向链表还是双向链表"><a href="#_54、java-中的-linkedlist-是单向链表还是双向链表" class="header-anchor">#</a> 54、Java 中的 LinkedList 是单向链表还是双向链表？</h3> <p>是双向链表，你可以检查 JDK 的源码。在 Eclipse，你可以使用快捷键 Ctrl + T，直接在编辑器中打开该类。</p> <h3 id="_55、java-中的-treemap-是采用什么树实现的"><a href="#_55、java-中的-treemap-是采用什么树实现的" class="header-anchor">#</a> 55、Java 中的 TreeMap 是采用什么树实现的？</h3> <p>Java 中的 TreeMap 是使用红黑树实现的。</p> <h3 id="_56、hashtable-与-hashmap-有什么不同之处"><a href="#_56、hashtable-与-hashmap-有什么不同之处" class="header-anchor">#</a> 56、Hashtable 与 HashMap 有什么不同之处？</h3> <p>这两个类有许多不同的地方，下面列出了一部分：</p> <p>a) Hashtable 是 JDK 1 遗留下来的类，而 HashMap 是后来增加的。</p> <p>b）Hashtable 是同步的，比较慢，但 HashMap 没有同步策略，所以会更快。</p> <p>c）Hashtable 不允许有个空的 key，但是 HashMap 允许出现一个 null key。</p> <h3 id="_57、java-中的-hashset-内部是如何工作的"><a href="#_57、java-中的-hashset-内部是如何工作的" class="header-anchor">#</a> 57、Java 中的 HashSet，内部是如何工作的？</h3> <p>HashSet 的内部采用 HashMap 来实现。由于 Map 需要 key 和 value，所以所有 key 的都有一个默认 value。类似于 HashMap，HashSet 不允许重复的key，只允许有一个 null key，意思就是 HashSet 中只允许存储一个 null 对象。</p> <h3 id="_58、写一段代码在遍历-arraylist-时移除一个元素"><a href="#_58、写一段代码在遍历-arraylist-时移除一个元素" class="header-anchor">#</a> 58、写一段代码在遍历 ArrayList 时移除一个元素？</h3> <p>该问题的关键在于面试者使用的是 ArrayList 的 remove() 还是 Iterator 的remove()方法。这有一段示例代码，是使用正确的方式来实现在遍历的过程中移除元素，而不会出现 ConcurrentModificationException 异常的示例代码。</p> <h3 id="_59、我们能自己写一个容器类-然后使用-for-each-循环码"><a href="#_59、我们能自己写一个容器类-然后使用-for-each-循环码" class="header-anchor">#</a> 59、我们能自己写一个容器类，然后使用 for-each 循环码？</h3> <p>可以，你可以写一个自己的容器类。如果你想使用 Java 中增强的循环来遍历，你只需要实现 Iterable 接口。如果你实现 Collection 接口，默认就具有该属性。</p> <h3 id="_60、arraylist-和-hashmap-的默认大小是多数"><a href="#_60、arraylist-和-hashmap-的默认大小是多数" class="header-anchor">#</a> 60、ArrayList 和 HashMap 的默认大小是多数？</h3> <p>在 Java 7 中，ArrayList 的默认大小是 10 个元素，HashMap 的默认大小是16 个元素（必须是 2 的幂）。这就是 Java 7 中 ArrayList 和 HashMap 类的代码片段：</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>// from ArrayList.java JDK 1.7
private static final int DEFAULT_CAPACITY = 10;
//from HashMap.java JDK 7
static final int DEFAULT_INITIAL_CAPACITY = 1 &lt;&lt; 4;
// aka 16复制代码
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><h3 id="_61、有没有可能两个不相等的对象有有相同的-hashcode"><a href="#_61、有没有可能两个不相等的对象有有相同的-hashcode" class="header-anchor">#</a> 61、有没有可能两个不相等的对象有有相同的 hashcode？</h3> <p>有可能，两个不相等的对象可能会有相同的 hashcode 值，这就是为什么在hashmap 中会有冲突。相等 hashcode 值的规定只是说如果两个对象相等，必须有相同的 hashcode 值，但是没有关于不相等对象的任何规定。</p> <h3 id="_62、两个相同的对象会有不同的的-hash-code-吗"><a href="#_62、两个相同的对象会有不同的的-hash-code-吗" class="header-anchor">#</a> 62、两个相同的对象会有不同的的 hash code 吗？</h3> <p>不能，根据 hash code 的规定，这是不可能的。</p> <h3 id="_63、我们可以在-hashcode-中使用随机数字吗"><a href="#_63、我们可以在-hashcode-中使用随机数字吗" class="header-anchor">#</a> 63、我们可以在 hashcode() 中使用随机数字吗？</h3> <p>不行，因为对象的 hashcode 值必须是相同的。参见答案获取更多关于 Java 中重写 hashCode() 方法的知识。</p> <h3 id="_64、java-中-comparator-与-comparable-有什么不同"><a href="#_64、java-中-comparator-与-comparable-有什么不同" class="header-anchor">#</a> 64、Java 中，Comparator 与 Comparable 有什么不同？</h3> <p>Comparable 接口用于定义对象的自然顺序，而 comparator 通常用于定义用户定制的顺序。Comparable 总是只有一个，但是可以有多个 comparator 来定义对象的顺序。</p> <h3 id="_65、为什么在重写-equals-方法的时候需要重写-hashcode-方法"><a href="#_65、为什么在重写-equals-方法的时候需要重写-hashcode-方法" class="header-anchor">#</a> 65、为什么在重写 equals 方法的时候需要重写 hashCode 方法？</h3> <p>因为有强制的规范指定需要同时重写 hashcode 与 equal 是方法，许多容器类，如 HashMap、HashSet 都依赖于 hashcode 与 equals 的规定。</p> <h3 id="_66、在我-java-程序中-我有三个-socket-我需要多少个线程来处理"><a href="#_66、在我-java-程序中-我有三个-socket-我需要多少个线程来处理" class="header-anchor">#</a> 66、在我 Java 程序中，我有三个 socket，我需要多少个线程来处理？</h3> <p>这个需要看你是并行处理还是串行处理了。</p> <h3 id="_67、java-中怎么创建-bytebuffer"><a href="#_67、java-中怎么创建-bytebuffer" class="header-anchor">#</a> 67、Java 中怎么创建 ByteBuffer？</h3> <div class="language- line-numbers-mode"><pre class="language-text"><code>byte[] bytes = new byte[10];
ByteBuffer buf = ByteBuffer.wrap(bytes);复制代码
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h3 id="_68、java-中-怎么读写-bytebuffer"><a href="#_68、java-中-怎么读写-bytebuffer" class="header-anchor">#</a> 68、Java 中，怎么读写 ByteBuffer ？</h3> <h3 id="_69、java-采用的是大端还是小端"><a href="#_69、java-采用的是大端还是小端" class="header-anchor">#</a> 69、Java 采用的是大端还是小端？</h3> <h3 id="_70、bytebuffer-中的字节序是什么"><a href="#_70、bytebuffer-中的字节序是什么" class="header-anchor">#</a> 70、ByteBuffer 中的字节序是什么？</h3> <h3 id="_71、java-中-直接缓冲区与非直接缓冲器有什么区别"><a href="#_71、java-中-直接缓冲区与非直接缓冲器有什么区别" class="header-anchor">#</a> 71、Java 中，直接缓冲区与非直接缓冲器有什么区别？</h3> <h3 id="_72、java-中的内存映射缓存区是什么"><a href="#_72、java-中的内存映射缓存区是什么" class="header-anchor">#</a> 72、Java 中的内存映射缓存区是什么？</h3> <h3 id="_73、socket-选项-tcp-no-delay-是指什么"><a href="#_73、socket-选项-tcp-no-delay-是指什么" class="header-anchor">#</a> 73、socket 选项 TCP NO DELAY 是指什么？</h3> <h3 id="_74、tcp-协议与-udp-协议有什么区别"><a href="#_74、tcp-协议与-udp-协议有什么区别" class="header-anchor">#</a> 74、TCP 协议与 UDP 协议有什么区别？</h3> <h3 id="_75、java-中-bytebuffer-与-stringbuffer-有什么区别"><a href="#_75、java-中-bytebuffer-与-stringbuffer-有什么区别" class="header-anchor">#</a> 75、Java 中，ByteBuffer 与 StringBuffer 有什么区别？</h3> <h3 id="_76、java-中-编写多线程程序的时候你会遵循哪些最佳实践"><a href="#_76、java-中-编写多线程程序的时候你会遵循哪些最佳实践" class="header-anchor">#</a> 76、Java 中，编写多线程程序的时候你会遵循哪些最佳实践？</h3> <p>a）给线程命名，这样可以帮助调试。</p> <p>b）最小化同步的范围，而不是将整个方法同步，只对关键部分做同步。</p> <p>c）如果可以，更偏向于使用 volatile 而不是 synchronized。</p> <p>d）使用更高层次的并发工具，而不是使用 wait() 和 notify() 来实现线程间通信，如 BlockingQueue，CountDownLatch 及 Semeaphore。</p> <p>e）优先使用并发集合，而不是对集合进行同步。并发集合提供更好的可扩展性。</p> <h3 id="_77、说出几点-java-中使用-collections-的最佳实践"><a href="#_77、说出几点-java-中使用-collections-的最佳实践" class="header-anchor">#</a> 77、说出几点 Java 中使用 Collections 的最佳实践</h3> <p>a）使用正确的集合类，例如，如果不需要同步列表，使用 ArrayList 而不是Vector。</p> <p>b）优先使用并发集合，而不是对集合进行同步。并发集合提供更好的可扩展性。</p> <p>c）使用接口代表和访问集合，如使用 List 存储 ArrayList，使用 Map 存储HashMap 等等。</p> <p>d）使用迭代器来循环集合。</p> <p>e）使用集合的时候使用泛型。</p> <h3 id="_78、说出至少-5-点在-java-中使用线程的最佳实践。"><a href="#_78、说出至少-5-点在-java-中使用线程的最佳实践。" class="header-anchor">#</a> 78、说出至少 5 点在 Java 中使用线程的最佳实践。</h3> <p>这个问题与之前的问题类似，你可以使用上面的答案。对线程来说，你应该：</p> <p>a）对线程命名</p> <p>b）将线程和任务分离，使用线程池执行器来执行 Runnable 或 Callable。</p> <p>c）使用线程池</p> <h3 id="_79、说出-5-条-io-的最佳实践"><a href="#_79、说出-5-条-io-的最佳实践" class="header-anchor">#</a> 79、说出 5 条 IO 的最佳实践</h3> <p>IO 对 Java 应用的性能非常重要。理想情况下，你不应该在你应用的关键路径上避免 IO 操作。下面是一些你应该遵循的 Java IO 最佳实践：</p> <p>a）使用有缓冲区的 IO 类，而不要单独读取字节或字符。</p> <p>b）使用 NIO 和 NIO2</p> <p>c）在 finally 块中关闭流，或者使用 try-with-resource 语句。</p> <p>d）使用内存映射文件获取更快的 IO。</p> <h3 id="_80、列出-5-个应该遵循的-jdbc-最佳实践"><a href="#_80、列出-5-个应该遵循的-jdbc-最佳实践" class="header-anchor">#</a> 80、列出 5 个应该遵循的 JDBC 最佳实践</h3> <p>有很多的最佳实践，你可以根据你的喜好来例举。下面是一些更通用的原则：</p> <p>a）使用批量的操作来插入和更新数据</p> <p>b）使用 PreparedStatement 来避免 SQL 异常，并提高性能。</p> <p>c）使用数据库连接池</p> <p>d）通过列名来获取结果集，不要使用列的下标来获取。</p></div></section> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">2021-9-2: </span> <span class="time">9/3/2021, 6:20:18 PM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev"><a href="/blogs/audition/java/java_base/base_5.html" class="prev">
            java基础面试题四
          </a></span> <span class="next"><a href="/blogs/audition/java/java_base/base_7.html">
            java基础面试题七
          </a></span></p></div> <div class="comments-wrapper"><!----></div> <ul class="side-bar sub-sidebar-wrapper" style="width:12rem;" data-v-70334359><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_51、arraylist-与-linkedlist-的不区别" class="sidebar-link reco-side-_51、arraylist-与-linkedlist-的不区别" data-v-70334359>51、ArrayList 与 LinkedList 的不区别？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_52、用哪两种方式来实现集合的排序" class="sidebar-link reco-side-_52、用哪两种方式来实现集合的排序" data-v-70334359>52、用哪两种方式来实现集合的排序？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_53、java-中怎么打印数组" class="sidebar-link reco-side-_53、java-中怎么打印数组" data-v-70334359>53、Java 中怎么打印数组？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_54、java-中的-linkedlist-是单向链表还是双向链表" class="sidebar-link reco-side-_54、java-中的-linkedlist-是单向链表还是双向链表" data-v-70334359>54、Java 中的 LinkedList 是单向链表还是双向链表？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_55、java-中的-treemap-是采用什么树实现的" class="sidebar-link reco-side-_55、java-中的-treemap-是采用什么树实现的" data-v-70334359>55、Java 中的 TreeMap 是采用什么树实现的？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_56、hashtable-与-hashmap-有什么不同之处" class="sidebar-link reco-side-_56、hashtable-与-hashmap-有什么不同之处" data-v-70334359>56、Hashtable 与 HashMap 有什么不同之处？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_57、java-中的-hashset-内部是如何工作的" class="sidebar-link reco-side-_57、java-中的-hashset-内部是如何工作的" data-v-70334359>57、Java 中的 HashSet，内部是如何工作的？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_58、写一段代码在遍历-arraylist-时移除一个元素" class="sidebar-link reco-side-_58、写一段代码在遍历-arraylist-时移除一个元素" data-v-70334359>58、写一段代码在遍历 ArrayList 时移除一个元素？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_59、我们能自己写一个容器类-然后使用-for-each-循环码" class="sidebar-link reco-side-_59、我们能自己写一个容器类-然后使用-for-each-循环码" data-v-70334359>59、我们能自己写一个容器类，然后使用 for-each 循环码？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_60、arraylist-和-hashmap-的默认大小是多数" class="sidebar-link reco-side-_60、arraylist-和-hashmap-的默认大小是多数" data-v-70334359>60、ArrayList 和 HashMap 的默认大小是多数？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_61、有没有可能两个不相等的对象有有相同的-hashcode" class="sidebar-link reco-side-_61、有没有可能两个不相等的对象有有相同的-hashcode" data-v-70334359>61、有没有可能两个不相等的对象有有相同的 hashcode？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_62、两个相同的对象会有不同的的-hash-code-吗" class="sidebar-link reco-side-_62、两个相同的对象会有不同的的-hash-code-吗" data-v-70334359>62、两个相同的对象会有不同的的 hash code 吗？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_63、我们可以在-hashcode-中使用随机数字吗" class="sidebar-link reco-side-_63、我们可以在-hashcode-中使用随机数字吗" data-v-70334359>63、我们可以在 hashcode() 中使用随机数字吗？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_64、java-中-comparator-与-comparable-有什么不同" class="sidebar-link reco-side-_64、java-中-comparator-与-comparable-有什么不同" data-v-70334359>64、Java 中，Comparator 与 Comparable 有什么不同？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_65、为什么在重写-equals-方法的时候需要重写-hashcode-方法" class="sidebar-link reco-side-_65、为什么在重写-equals-方法的时候需要重写-hashcode-方法" data-v-70334359>65、为什么在重写 equals 方法的时候需要重写 hashCode 方法？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_66、在我-java-程序中-我有三个-socket-我需要多少个线程来处理" class="sidebar-link reco-side-_66、在我-java-程序中-我有三个-socket-我需要多少个线程来处理" data-v-70334359>66、在我 Java 程序中，我有三个 socket，我需要多少个线程来处理？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_67、java-中怎么创建-bytebuffer" class="sidebar-link reco-side-_67、java-中怎么创建-bytebuffer" data-v-70334359>67、Java 中怎么创建 ByteBuffer？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_68、java-中-怎么读写-bytebuffer" class="sidebar-link reco-side-_68、java-中-怎么读写-bytebuffer" data-v-70334359>68、Java 中，怎么读写 ByteBuffer ？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_69、java-采用的是大端还是小端" class="sidebar-link reco-side-_69、java-采用的是大端还是小端" data-v-70334359>69、Java 采用的是大端还是小端？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_70、bytebuffer-中的字节序是什么" class="sidebar-link reco-side-_70、bytebuffer-中的字节序是什么" data-v-70334359>70、ByteBuffer 中的字节序是什么？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_71、java-中-直接缓冲区与非直接缓冲器有什么区别" class="sidebar-link reco-side-_71、java-中-直接缓冲区与非直接缓冲器有什么区别" data-v-70334359>71、Java 中，直接缓冲区与非直接缓冲器有什么区别？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_72、java-中的内存映射缓存区是什么" class="sidebar-link reco-side-_72、java-中的内存映射缓存区是什么" data-v-70334359>72、Java 中的内存映射缓存区是什么？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_73、socket-选项-tcp-no-delay-是指什么" class="sidebar-link reco-side-_73、socket-选项-tcp-no-delay-是指什么" data-v-70334359>73、socket 选项 TCP NO DELAY 是指什么？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_74、tcp-协议与-udp-协议有什么区别" class="sidebar-link reco-side-_74、tcp-协议与-udp-协议有什么区别" data-v-70334359>74、TCP 协议与 UDP 协议有什么区别？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_75、java-中-bytebuffer-与-stringbuffer-有什么区别" class="sidebar-link reco-side-_75、java-中-bytebuffer-与-stringbuffer-有什么区别" data-v-70334359>75、Java 中，ByteBuffer 与 StringBuffer 有什么区别？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_76、java-中-编写多线程程序的时候你会遵循哪些最佳实践" class="sidebar-link reco-side-_76、java-中-编写多线程程序的时候你会遵循哪些最佳实践" data-v-70334359>76、Java 中，编写多线程程序的时候你会遵循哪些最佳实践？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_77、说出几点-java-中使用-collections-的最佳实践" class="sidebar-link reco-side-_77、说出几点-java-中使用-collections-的最佳实践" data-v-70334359>77、说出几点 Java 中使用 Collections 的最佳实践</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_78、说出至少-5-点在-java-中使用线程的最佳实践。" class="sidebar-link reco-side-_78、说出至少-5-点在-java-中使用线程的最佳实践。" data-v-70334359>78、说出至少 5 点在 Java 中使用线程的最佳实践。</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_79、说出-5-条-io-的最佳实践" class="sidebar-link reco-side-_79、说出-5-条-io-的最佳实践" data-v-70334359>79、说出 5 条 IO 的最佳实践</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_6.html#_80、列出-5-个应该遵循的-jdbc-最佳实践" class="sidebar-link reco-side-_80、列出-5-个应该遵循的-jdbc-最佳实践" data-v-70334359>80、列出 5 个应该遵循的 JDBC 最佳实践</a></li></ul></main> <!----></div></div></div></div><div class="global-ui"><div class="back-to-ceiling" style="right:1rem;bottom:6rem;width:2.5rem;height:2.5rem;border-radius:.25rem;line-height:2.5rem;display:none;" data-v-c6073ba8 data-v-c6073ba8><svg t="1574745035067" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5404" class="icon" data-v-c6073ba8><path d="M526.60727968 10.90185116a27.675 27.675 0 0 0-29.21455937 0c-131.36607665 82.28402758-218.69155461 228.01873535-218.69155402 394.07834331a462.20625001 462.20625001 0 0 0 5.36959153 69.94390903c1.00431239 6.55289093-0.34802892 13.13561351-3.76865779 18.80351572-32.63518765 54.11355614-51.75690182 118.55860487-51.7569018 187.94566865a371.06718723 371.06718723 0 0 0 11.50484808 91.98906777c6.53300375 25.50556257 41.68394495 28.14064038 52.69160883 4.22606766 17.37162448-37.73630017 42.14135425-72.50938081 72.80769204-103.21549295 2.18761121 3.04276886 4.15646224 6.24463696 6.40373557 9.22774369a1871.4375 1871.4375 0 0 0 140.04691725 5.34970492 1866.36093723 1866.36093723 0 0 0 140.04691723-5.34970492c2.24727335-2.98310674 4.21612437-6.18497483 6.3937923-9.2178004 30.66633723 30.70611158 55.4360664 65.4791928 72.80769147 103.21549355 11.00766384 23.91457269 46.15860503 21.27949489 52.69160879-4.22606768a371.15156223 371.15156223 0 0 0 11.514792-91.99901164c0-69.36717486-19.13165746-133.82216804-51.75690182-187.92578088-3.42062944-5.66790279-4.76302748-12.26056868-3.76865837-18.80351632a462.20625001 462.20625001 0 0 0 5.36959269-69.943909c-0.00994388-166.08943902-87.32547796-311.81420293-218.6915546-394.09823051zM605.93803103 357.87693858a93.93749974 93.93749974 0 1 1-187.89594924 6.1e-7 93.93749974 93.93749974 0 0 1 187.89594924-6.1e-7z" p-id="5405" data-v-c6073ba8></path><path d="M429.50777625 765.63860547C429.50777625 803.39355007 466.44236686 1000.39046097 512.00932183 1000.39046097c45.56695499 0 82.4922232-197.00623328 82.5015456-234.7518555 0-37.75494459-36.9345906-68.35043303-82.4922232-68.34111062-45.57627738-0.00932239-82.52019037 30.59548842-82.51086798 68.34111062z" p-id="5406" data-v-c6073ba8></path></svg></div><!----><canvas id="vuepress-canvas-cursor"></canvas></div></div>
    <script src="/assets/js/app.7029ddab.js" defer></script><script src="/assets/js/3.ebaa3085.js" defer></script><script src="/assets/js/1.8ce67e8c.js" defer></script><script src="/assets/js/56.e820e954.js" defer></script>
  </body>
</html>
